#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include "../device/driver_si7006.h"

#define BUFFER_SIZE 1024

int main()
{
    int ret;
    // 创建套接字
    // int client_socket = socket(AF_INET, SOCK_STREAM, 0);
    // if (client_socket == -1) {
    //     perror("Socket creation failed");
    //     return 1;
    // }

    // // 服务器地址结构体
    // struct sockaddr_in server_addr;
    // server_addr.sin_family = AF_INET;
    // server_addr.sin_port = htons(8880);  // 设置服务器端口号，可根据实际情况修改
    // server_addr.sin_addr.s_addr = inet_addr("192.168.1.107");  // 设置服务器IP地址，可根据实际情况修改

    // // 连接服务器
    // if (connect(client_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
    //     perror("Connection failed");
    //     close(client_socket);
    //     return 1;
    // }

    // // 关闭套接字
    // close(client_socket);

    // int ledfd = open("/dev/myleds", O_RDWR);
    // if(ledfd == -1)
    // {
    //     printf("open myleds error");
    //     return -1;
    // }

    // char buff[10] = {0};
    // ret = read(ledfd, buff, sizeof(ledfd));
    // if(ret == -1)
    // {
    //     printf("read /dev/myleds error!\n");
    //     return -1;
    // }
    // printf("buff = %s\n", buff);

    // sleep(1);

    // buff[0] = '1';
    // ret = write(ledfd, buff, sizeof(buff));
    // if(ret == -1)
    // {
    //     printf("write /dev/myleds error!\n");
    //     return -1;
    // }

    // close(ledfd);

    int fd, temp_code, humi_code;
    float temp, humi;

    fd = open("/dev/mysi7006", O_RDWR);
    if (fd == -1)
    {
        printf("open /dev/mysi7006 error!\n");
        return -1;
    }

    while (1)
    {
        ioctl(fd, GET_TMP, &temp_code);
        ioctl(fd, GET_HUM, &humi_code);

        temp = (175.72 * temp_code) / 65536 - 46.85;
        humi = (125.0 * humi_code) / 65536 - 6;

        printf("tmp=%.2f,hum=%.2f\n", temp, humi);
        fflush(stdout);

        usleep(500);
    }

    close(fd);

    // int ap3216val[3] = {0};
    // int fd;
    // fd = open("/dev/myap3216", O_RDWR);
    // if (fd == -1)
    // {
    //     printf("open /devmyap3216 error!\n");
    //     return -1;
    // }

    // while (1)
    // {
    //     ret = read(fd, ap3216val, sizeof(ap3216val));
    //     sleep(1);
    //     printf("ret = %d\n", ret);
    //     for (int i = 0; i < 3; i++)
    //     {
    //         printf("[%d]:%d\n", i, ap3216val[i]);
    //     }
    //     printf("\n");
    // }

    return 0;
}